
package com.scs.application.modules.settlement.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.scs.application.core.model.CommonResult;
import com.scs.application.core.service.IBaseService;
import com.scs.application.modules.settlement.dto.BillDTO;
import com.scs.application.modules.settlement.dto.BillStatusDTO;
import com.scs.application.modules.settlement.entity.Bill;
import com.scs.application.modules.settlement.request.BillQueryRequest;
import com.scs.application.modules.thirdparty.erp.request.BillConfirmRequest;
import com.scs.application.modules.thirdparty.erp.request.BillRequest;
import com.scs.application.modules.thirdparty.erp.request.InvoiceRequest;
import com.scs.application.modules.thirdparty.erp.vo.SettlementVO;

import java.util.List;

/**
 * 记账单 service 接口
 *
 */
public interface BillService extends IBaseService<Bill> {

    List<Bill> list(BillQueryRequest request);


    IPage<Bill> page(BillQueryRequest request);

    boolean add(Bill entity);


    /**
     * 接收院方接口记账单信息
     *
     * @param billDTOS
     */
    void batchSaveForDTO(List<BillDTO> billDTOS);

    void batchUpdateStatusForDTO(List<BillStatusDTO> billStatusDTOS);

    /**
     *  接收院方接口记账单信息
     * @param billDTOS
     * @return
     */
    void receiveBills(List<BillDTO> billDTOS);

    /**
     *  接收院方接口记账单信息
     * @param billDTOS
     */
    void batchSaveForFeign(List<BillDTO> billDTOS);

    List<SettlementVO> getSettlement(String startDate);

    CommonResult syncSettlementStatus(String settlementCode, Integer settlementStatus);

    CommonResult billDownloadConfirm(BillConfirmRequest request);

    CommonResult invoiceInfoUpload(InvoiceRequest request);

    CommonResult billDownload(BillRequest request);
}
